/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package PasswrdChk02.Regras;

/**
 *
 * @author LABCCET
 */

public class PasswordSolver02 {
   
   
   private final int FATOR_BONUS_TAMANHO_SENHA = 4;
   String password;

    public PasswordSolver02(String password) {
        this.password = password;
    }

   public int CalcularPontosSenha(){
        Bonus bonus = new Bonus(password);
        Descontos descontos = new Descontos(password);
        int total = calcularPontosBase()+bonus.calcularBonus()-descontos.calcularDescontos();
        return (total>100)? 100:((total<0)? 0:total);
    }
   
   public String classificarSenha(int pontos){
         if (pontos > 100) { pontos = 100; } 
            else if (pontos < 0) { pontos = 0; }
		if (pontos >= 0 && pontos < 20) { return "Very Weak"; }
		else if (pontos >= 20 && pontos < 40) {return "Weak"; }
		else if (pontos >= 40 && pontos < 60) { return "Medium"; }
		else if (pontos >= 60 && pontos < 80) { return "Strong"; }
		else { System.out.println("Ponto s= "+pontos);return "Very Strong"; }
}  
    
   public void resolverSenha(String password){
        int pontos = this.CalcularPontosSenha();
        System.out.println("Pontos da Senha: "+ pontos+ "%, resultado: "+this.classificarSenha(pontos));
    }

   public int calcularPontosBase() {
        return password.length() * FATOR_BONUS_TAMANHO_SENHA;
    }

}
